/*
 * @Author: your name
 * @Date: 2021-02-25 21:31:37
 * @LastEditTime: 2021-03-01 12:04:28
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \vue_test\src\main-prod.js
 */
import Vue from 'vue'
import App from './App.vue'
import router from './router'


//导入公共样式表 - 所有的公共文件都应该在入口文件引入，因为这是单页面应用
import "@/assets/css/global.css"

//引入字体库
import "@/assets/fonts/iconfont.css"

import './plugins/element.js'

//导入axios以发送ajax请求
import axios from 'axios'

//引入 vue-table-with-tree-grid
import TreeTable from 'vue-table-with-tree-grid'

//导入vue-quill-editor(富文本编辑器)
import VueQuillEditor from 'vue-quill-editor'
//导入vue-quill-editor的样式

import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'

//导入进度条插件
import NProgress from 'nprogress';
//导入进度条样式
import 'nprogress/nprogress.css';



//设置请求的根路径
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'

//axios请求拦截器
//后台除了登录接口之外,都需要token权限验证,我们可以通过添加axios请求拦截器来添加token
//用来保证获取数据的权限

//必须明白一点,这里使用axios请求数据的时候,必须验证Authorization字段

//请求在到达服务器之前,先调用use中的这个回调函数来添加请求头信息
//axios只要使用了这个,必须返回config，否则的话,就不能使用axios再、进行数据请求了
axios.interceptors.request.use(config => {
  //当进入request拦截器,表示发送了请求,我们就开启进度条
  NProgress.start();
  //为请求头对象,添加token验证的Authorization字段
  console.log(config);
  config.headers.Authorization = window.sessionStorage.getItem('token')
  return config;
})


//在response拦截器中,隐藏进度条,也就是已经请求到服务器的数据
axios.interceptors.response.use(config => {
  //当进入response拦截器,表示请求已经结束,我们就结束进度条
  NProgress.done();
  return config;
});

//挂载axios
Vue.prototype.$http = axios;

Vue.config.productionTip = false

//创建过滤器将秒数过滤为年月日，时分秒
//padStart 不够两位在前面补充0直到两位为止
//这里的过滤器就相当是一个方法，然后可以直接拿来使用
Vue.filter('dateFormat',function (originVal) {
  //格式化现在的时间戳
  const dt = new Date(originVal);
  //年
  const y = dt.getFullYear();
  //月
  const m = (dt.getMonth() + 1 + '').padStart(2,'0');
  //日
  const d = (dt.getDate() + '').padStart(2,'0');

  //时
  const hh = (dt.getHours() + '').padStart(2,'0');
  //分
  const mm = (dt.getMinutes() + '').padStart(2,'0');
  //秒
  const ss = (dt.getSeconds() + '').padStart(2,'0');

  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
});

//全局注册组件
Vue.component('tree-table',TreeTable)

//全局注册富文本组件
Vue.use(VueQuillEditor);

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
